﻿using System;
using Autofac;
using ComputerVision.BaseForm;
using ComputerVision.Common;
using ComputerVision.Data;
using ComputerVision.Services;
using ComputerVision.Services.User;
using QuanLyThongTinCoSo.Common;

namespace ComputerVision.PhieuDieuTraCoSoForm
{
    public partial class frmTuyenTruyenHuanLuyen : frmDetail
    {
        public Guid IdPhieu;
        private readonly IService<TuyenTruyenHuanLuyen> _tuyenTruyenHuanLuyenService;
        private readonly IUserService<aspnet_Users> _userService;

        public frmTuyenTruyenHuanLuyen()
        {
            InitializeComponent();
            _tuyenTruyenHuanLuyenService = Program.Container.Resolve<IService<TuyenTruyenHuanLuyen>>();
            _userService = Program.Container.Resolve<IUserService<aspnet_Users>>();
            dtNgay.Focus();
            Text = @"Thêm Công tác tuyên truyền, huấn luyện PCCC";
        }

        public frmTuyenTruyenHuanLuyen(Guid id)
        {
            InitializeComponent();
            _tuyenTruyenHuanLuyenService = Program.Container.Resolve<IService<TuyenTruyenHuanLuyen>>();
            _userService = Program.Container.Resolve<IUserService<aspnet_Users>>();
            Text = @"Sửa Công tác tuyên truyền, huấn luyện PCCC";
            dtNgay.Focus();
            _fromtype = Constants.TypeForm.Edit;
            guid = id;

            var item = _tuyenTruyenHuanLuyenService.Detail(id);
            if (item != null)
            {
                dtNgay.Value = item.Ngay;
                txtThoiLuong.Text = item.ThoiLuong.ToString();
                txtNoiDung.Text = item.NoiDung;
                txtLucLuongPCCC.Text = item.LucLuongPCCCCoSo.ToString();
                txtCanBo.Text = item.CanBoQuanLy.ToString();
                txtNguoiLaoDong.Text = item.NguoiLaoDong.ToString();
                txtDoiTuongKhac.Text = item.DoiTuongKhac.ToString();
                txtSoGiay.Text = item.SoGiayCN.ToString();
            }
        }

        #region Validation

        protected override bool Validator()
        {
            errorProvider.Dispose();

            if (string.IsNullOrEmpty(txtThoiLuong.Text))
            {
                errorProvider.SetError(txtThoiLuong, "Bạn chưa nhập thời lượng. Xin vui lòng kiểm tra lại");
                return false;
            }

            if (string.IsNullOrEmpty(txtLucLuongPCCC.Text))
            {
                errorProvider.SetError(txtLucLuongPCCC, "Bạn chưa nhập số lượng lực lượng PCCC cở sở. Xin vui lòng kiểm tra lại");
                return false;
            }

            if (string.IsNullOrEmpty(txtCanBo.Text))
            {
                errorProvider.SetError(txtCanBo, "Bạn chưa nhập số lượng cán bộ quản lý, lãnh đạo. Xin vui lòng kiểm tra lại");
                return false;
            }

            if (string.IsNullOrEmpty(txtNguoiLaoDong.Text))
            {
                errorProvider.SetError(txtNguoiLaoDong, "Bạn chưa nhập số lượng người lao động. Xin vui lòng kiểm tra lại");
                return false;
            }

            if (string.IsNullOrEmpty(txtDoiTuongKhac.Text))
            {
                errorProvider.SetError(txtDoiTuongKhac, "Bạn chưa nhập số lượng đối tượng khác. Xin vui lòng kiểm tra lại");
                return false;
            }

            return true;
        }

        #endregion

        #region Insert
        protected override void Insert()
        {
            try
            {
                var model = new TuyenTruyenHuanLuyen()
                {
                    Id = Guid.NewGuid(),
                    Ngay = dtNgay.Value.Date,
                    ThoiLuong = int.Parse(txtThoiLuong.Text),
                    NoiDung = txtNoiDung.Text,
                    LucLuongPCCCCoSo = int.Parse(txtLucLuongPCCC.Text),
                    CanBoQuanLy = int.Parse(txtCanBo.Text),
                    NguoiLaoDong = int.Parse(txtNguoiLaoDong.Text),
                    DoiTuongKhac = int.Parse(txtDoiTuongKhac.Text),
                    SoGiayCN = txtSoGiay.Text,
                    PhieuDieuTraCoSoId = this.IdPhieu,
                    Created = DateTime.Now,
                    CreatedBy = Constants.CurrentUser,
                    Modified = DateTime.Now,
                    ModifiedBy = Constants.CurrentUser
                };
                _tuyenTruyenHuanLuyenService.Create(model);
            }
            catch (Exception ex)
            {
                AlertList.Error("Lỗi phát sinh khi tạo mới dữ liệu.");
            }
        }
        #endregion

        #region Edit

        protected override void Edit()
        {
            var item = _tuyenTruyenHuanLuyenService.Detail(guid);
            if (item != null)
            {
                item.Ngay = dtNgay.Value.Date;
                item.ThoiLuong = int.Parse(txtThoiLuong.Text);
                item.NoiDung = txtNoiDung.Text;
                item.LucLuongPCCCCoSo = int.Parse(txtLucLuongPCCC.Text);
                item.CanBoQuanLy = int.Parse(txtCanBo.Text);
                item.NguoiLaoDong = int.Parse(txtNguoiLaoDong.Text);
                item.DoiTuongKhac = int.Parse(txtDoiTuongKhac.Text);
                item.SoGiayCN = txtSoGiay.Text;
                item.Modified = DateTime.Now;
                item.ModifiedBy = Constants.CurrentUser;
                _tuyenTruyenHuanLuyenService.Update(item);
            }
        }

        #endregion
    }
}
